<?php
namespace app\index\controller\index;
use think\Request;
use app\index\server\index\Login as loginServer;
use app\index\common;
use Wechat\Wechat;
use think\facade\Session;
use think\facade\Cookie;
use think\facade\Cache;
/**
 * @title 用户登陆类
 * 
 */
class Login{
	protected $request;
	public static $server;
	public $file="order1";
    public function __construct(request $request)
    {
    	$this->request=$request;
    	$this->checkParam($this->REQUEST);
        self::$server=new loginServer($request);
    }
    /**
     * @title 获取微信授权显示并跳转到首页 
     * @param bool bool 不需要任何请求参数直接访问该URl 通过此获取用户接口
     */
    public function show_template(){
    	if(empty(Session::get('userinfo')) && Cookie::get("userinfo")){
    		$userinfo=json_encode(Cookie::get("userinfo"));
    	}else{
    		$userinfo=Session::get('userinfo');
    	}
    	
 		if(!isset($userinfo['openid'])){
	    	$Wechat=new Wechat($this->request); 
	        $data=$Wechat->checkAuth();
	        if($data==false){
	        	common::site_refund_insert_message(__line__."message".$Wechat->error."|".$Wechat->code,$this->file);
	    		common::site_refund_insert_message(__line__."get userinfo".json_encode($data),$this->file);
	    	}
	        $url="http://".$_SERVER['HTTP_HOST'].'/mUser/#/home';
		}else{
			$url="http://".$_SERVER['HTTP_HOST'].'/mUser/#/home';
		}
		common::site_refund_insert_message("select session:".json_encode($userinfo),$this->file);
		header("location:".$url);
    }
    /**
     * @title 获取JS需要的配置文件
     * @param string url
     */
    public function config(){
    	$Wechat=new Wechat($this->request); 
    	//$url='http://xiangwangxiaodian.shijuyunfan.net/mUser';
    	$url=$this->request->param();
    	$Wechat=new Wechat($this->request);
    	$urls=$url['url'];
	    $data=$Wechat->getJssdkConfig($urls);
	    if($data==false){
			return common::return_json($data,self::$server->error,self::$server->code);
		}else{
			return common::return_json($data,self::$server->success,self::$server->code);
		}
    }
 
    /**
     * @title 获取验证码接口
     * @param string mobile 需要获取到的验证码
     * @param int type 0登陆1更换手机号时验证
     * @return string code 获取到的验证码  
     */
    public function getCode(){
    	return $this->commonInit(__function__);
    }
    /**
     * @title 验证当前手机号码
     * @param string mobile 当前用户的手机号
     * @param string code  当前手机号获取的验证码
     * @return bool true/false 成功code 200失败201
     * 
     */
    public function checkMobile(){
    	return $this->commonInit(__function__);
    }
    
    /**
     * @title 更换手机号码
     * @param string mobile 当前需要更 改的手机号码
     * @param string code 当前需要更换的手机号码接收到的验证码
     * @return bool true/false
     */
    public function updateMobile(){
    	return $this->commonInit(__function__);
    }
    /**
     * @title 用户登陆
     * @param string mobile 用户手机号 
     * @param string code  验证码
     * @return int user_id 
     * @return string token 用户token token 在每次接口里的header传过来,示例token:"690cd5a107df061d896405e90ce1b33c|1|1640000000"第一个参数为返回的token+用户Id+时间戳来生成,第二个参数用户id，第三个参数为生成token的时间戳 
     */
    public function login(){
    	return $this->commonInit(__function__);
    }
    /**
     * 公共接口
     * 
     */
    private function commonInit($function){
    	$data=self::$server->$function();
		if($data==false){
			return common::return_json($data,self::$server->error,self::$server->code);
		}else{
			return common::return_json($data,self::$server->success,self::$server->code);
		}
    }
}